# coding=utf-8
import string
import random
import time


def generate_code(prefix):
    '''
    生成28位的流水号，编号：3位的前缀（表示什么类型的） + 14位的时间 + 7位的微秒 + 4位的随机数
    '''

    seeds = string.digits # 生成一个种子（用种子生成的随机数，不容易重复）
    # 得到列表
    radom_str = random.choices(seeds,k=4) # 生成随机数，传参第一个传种子，k表示要几位随机数
    # 列表变字符串
    radom_str = ''.join(radom_str) # 将列表拆开，用空字符进行连接

    # 获得整一个流水号
    # time.localtime(time.time()) 将一个时间戳转换为当前时区的 struct_time。若未提供参数，则以当前时间为准
    # time.time()返回当前时间的时间戳
    # replace('.','')[-7:]这个是截取时间戳，将.号替换成空字符，从-7位一直截取到后面
    code_no = '%s%s%s%s' %(prefix,time.strftime('%Y%m%d%H%M%S',time.localtime(time.time())),
                           str(time.time()).replace('.','')[-7:],
                           radom_str
                            )

    return code_no

if __name__ == '__main__':
    print(generate_code('ORD'))















